Mailing machines, readily available from manufacturers such as Pitney Bowes Inc. of Stamford, CT, USA, are well known in the art and often include a variety of different modules, which automate the process of producing mailpieces. The typical mailing machine includes a variety of different modules or sub-systems where each module performs a different task on a mailpiece, such as: singulating (separating the mailpieces one at a time from a stack of mailpieces), weighing, sealing (wetting and closing the glued flap of an envelope), applying evidence of postage, accounting for postage used (performed by the postage meter), feeding roll tape or cut tape strips for printing and stacking finished mailpieces. However, the exact configuration of each mailing machine is particular to the needs of the user. Customarily, the mailing machine also includes a transport apparatus, which feeds the mailpieces in a path of travel through the successive modules of the mailing machine.
The mailing machine also includes a user interface for communicating messages to and receiving inputs from the operator as well as communicating with external devices, such as: an external scale, a data center or a personal computer. In many mailing machine applications, it is desirable to provide an ever increasing number of operator selectable functions through a user friendly interface. Some of the types of functions that an operator has control over are: setting the operating modes of the mailing machine for a batch run (postage only, weigh/no weigh, seal/no seal, print ad slogan/no ad slogan, seal only, etc.), printing reports, establishing accounts, downloading postage, changing the ad slogan, running diagnostics, and the like.
An effective user interface typically includes a display, a keyboard having a plurality of keys, an application software program and an operating system software program. Generally, the operating system software program controls the menus and messages shown on the display, interprets the inputs received from the operator via the keyboard and controls/coordinates the operations of the various modules of the mailing machine.
Every general purpose computer and computer-based system must have an operating system. Operating systems perform basic tasks, such as recognizing input from the keyboard, sending output to the display screen, keeping track of files and directories on the disk, and controlling peripheral devices such as disk drives and printers. For large integrated systems, such as a mailing machine, the operating system has even greater responsibilities and powers. It must coordinate the activities between the various modules and make sure that different programs (tasks) running at the same time do not interfere with each other.
Operating systems provide a software platform on top of which application programs run. Thus, the application programs are typically written with a particular operating system in mind. Together, the application programs and the operating system form a control system that governs the overall operation and functionality of the computer system.
In a mailing machine, this problem is exacerbated because of the communication and processing needs of the numerous modules and any other interfaced external devices (collectively "devices"). Traditional mailing machine control system architectures, such as that shown in FIG. 1, provide the ability to communicate with the various devices using separate interfaces. Separate interfaces enable simultaneous communication with all devices. These interfaces typically employ multiple universal asynchronous receiver/transmitter (UARTs) for handling serial data streams. The fact that each device has its own separate interface allows the control system to be designed in a very modular manner and operations to be concurrent. Software for each device includes an Interrupt Service Routine (ISR) and a Device Control task. The ISR performs the hardware interface to the UART and extracts the data from the Transmit buffer as well as storing any received data to the receive buffer. The ISR routine may perform low level message formatting operations, but this is purely an implementation point. The Device Control task is responsible for accepting and acting on requests from other tasks, in addition to managing any data received from its device. Typically a Device Control task has enough intelligence that allows it to communicate with its device with little, if any, intervention from an Application Control Task.
The Application Control task controls the synchronization of all Device Control tasks, and maintains the overall operating state of the control system. For example, the User Interface (UI) Task may accept a request by the operator to print a report. This request gets routed to the Application Task which in turn gets sent to the Printer Task. The Printer Task may get the necessary system data for the report, and will begin printing it. Next, the Operator may request information from a Peripheral Device. This request gets routed the Peripheral task via the Application task. The Peripheral task issues the appropriate commands to the external device, gets the responses and returns the data to the UI Task via the Application Task.
Although such prior art systems generally work well, they are time consuming and costly to develop while requiring large amounts of memory and computing resources. Also, incorporating fixes, enhancements or other upgrades to the control system are generally complex and time consuming as operating system changes must be integrated with application programs and vice versa.
Therefore, there is a need for a mailing machine including a control system that reduces development time and costs and system resource requirements while facilitating upgrades to the control system.